import java.util.Random; import java.io.PrintWriter; import java.io.*; import java.lang.*; public final class GenerateRandomValue { public static void main(String[] args){ String FileNameArg = args[0]; GenerateRandomValue distrandom = new GenerateRandomValue(); if (args[1].equals("Normal")) { double MEAN = Double.parseDouble(args[2]); double VARIANCE = Double.parseDouble(args[3]); WriteToFile(FileNameArg, distrandom.getGaussian(MEAN, VARIANCE)); } else if (args[1].equals("Exponential")) { double lambda = Double.parseDouble(args[2]); WriteToFile(FileNameArg, distrandom.getExponential(lambda)); } else if (args[1].equals("Uniform")) { double lowerlim = Double.parseDouble(args[2]); double upperlim = Double.parseDouble(args[3]); WriteToFile(FileNameArg, distrandom.getUniform(lowerlim, upperlim)); } else if (args[1].equals("Triangle")) { double upperlim = Double.parseDouble(args[2]); double middleval = Double.parseDouble(args[3]); double lowerlim = Double.parseDouble(args[4]); WriteToFile(FileNameArg, distrandom.getTriangle(upperlim, middleval, lowerlim)); } } private Random fRandom = new Random(); private double getGaussian(double aMean, double aVariance){ return aMean + fRandom.nextGaussian() * aVariance; } private double getExponential(double lambda){ double x = ( - 1/lambda) * Math.log(1 - fRandom.nextDouble()); return x; } private double getUniform(double lower, double upper){ double x = lower + fRandom.nextDouble() * (upper - lower); return x; } private double getTriangle(double upper, double middle, double lower){ double u = fRandom.nextDouble(); double fc = (middle - lower)/(upper - lower); double result = 0.0; if ((u < fc) && (u > 0)) { result = lower + Math.sqrt(u * (upper - lower) * (middle - lower)); } else if ((fc <= u) && (u < 1)) { result = upper - Math.sqrt((1 - u) * (upper - lower) * (upper - middle)); } return result; } private static void WriteToFile(String filename, Object aMsg){ File file = new File (filename); try { PrintWriter printWriter = new PrintWriter(filename); printWriter.println(aMsg); printWriter.close(); } catch (FileNotFoundException ex) { System.out.println(ex); } } }